共计 930 个字符,预计需要花费 3 分钟才能阅读完成。
问题描述
MySQL报错:[Err] 1055 – Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column ‘information_schema.PROFILING.SEQ’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
问题原因
在SQL_mode中开启了 only_full_group_by 模式。
only_full_group_by的作用:使用这个就是使用和oracle一样的group 规则, select的列都要在group中,或者本身是聚合列(SUM,AVG,MAX,MIN) 才行
解决方案
解决方式一:
修改SQL语句,在group by子句中将需要select的列都写上
解决方式二: (MySQL重启后会失效)
将SQL_mode中的only_full_group_by 删除。
- 查看SQL_mode
select @@global.sql_mode
默认的值为ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
- 修改SQL_mode
set @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
解决方式三:【推荐】
修改ini配置文件。
- 在根目录下找到my.ini文件。在[mysqld]下添加以下配置信息:
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
- 保存ini文件。
- 重启MySQL服务。